package com.hust360.percent.pojo;

import java.io.Serializable;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 打折信息的实体类
 */
//Comparable<Discount>,
public abstract class Discount implements  Serializable {


	/**
	 * 
	 */
	private static final long serialVersionUID = 5175732892618894267L;

	public static final String TABLE = "discount";

	/**
	 * 打折信息的id
	 */
	public Long id;
	public static final String ID = "id";

	/**
	 * 店铺的id
	 */
	public Long shopid;
	public static final String SHOP_ID = "shopid";

	/**
	 * 打折信息的描述
	 */
	public String describe;
	public static final String DESCRIBE = "describe";

	/**
	 * 打折类别，1是全部 2是部分
	 */
	public Integer disctype;
	public static final String DISCTYPE = "disctype";

	/**
	 * 折扣
	 */
	public Integer discount;
	public static final String DISCOUNT = "discount";

	/**
	 * 打折开始的时间
	 */
	public Date startdate;
	public static final String START_DATE = "startdate";

	/**
	 * 结束时间
	 */
	public Date enddate;
	public static final String END_DATE = "enddate";

	/**
	 * 修改时间
	 */
	public Date moddate;
	public static final String MOD_DATE = "moddate";

	public static final String[] columns = { DESCRIBE, DISCOUNT, DISCTYPE,
			END_DATE, ID, MOD_DATE, SHOP_ID, START_DATE };

	/**
	 * Comparator的排序对比接口 可以通过实现不同的该接口实现不同的排序方法
	 */
	public static Comparator<Discount> comparator;

	/**
	 * 返回打折信息的所有的图片的列表 其中Image的对象是Image数据库表的映射
	 */
	public abstract List<Image> getImages();

	/**
	 * 返回打折信息所对应的店铺
	 */
	public abstract Shop getShop();

	/**
	 * 返回改打折信息所有的评论
	 */
	public abstract List<Appraise> getAppraises();

	/**
	 * 获得打折信息的星星个数
	 */
	public abstract float getRate();

//	@Override
//	public int compareTo(Discount another) {
//		if (comparator != null) {
//			return comparator.compare(this, another);
//		}
//		return 0;
//	}

	public static interface DiscountDAO {

		/**
		 * 通过id来获取一个打折信息
		 */
		public Discount findById(long discountId);

		/**
		 * 通过一个Map来获取DiscountInfo的列表
		 */
		public List<Discount> findWithMap(Map<String, String> map);

		/**
		 * 插入或者更新的方法
		 */
		public void save(Discount info);
	}
}
